{
  "aliases": [
    "php",
    "php3",
    "php4",
    "php5",
    "php6",
    "php7"
  ],
  "case_insensitive": true,
  "keywords": "and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",
  "contains": [
    {
      "className": "comment",
      "begin": "#",
      "end": "$",
      "contains": [
        {
          "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b"
        },
        {
          "className": "doctag",
          "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
          "relevance": 0
        }
      ]
    },
    {
      "className": "comment",
      "begin": "//",
      "end": "$",
      "contains": [
        {
          "className": "meta",
          "begin": "<\\?(php)?|\\?>"
        },
        {
          "$ref": "#contains.0.contains.0"
        },
        {
          "className": "doctag",
          "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
          "relevance": 0
        }
      ]
    },
    {
      "className": "comment",
      "begin": "/\\*",
      "end": "\\*/",
      "contains": [
        {
          "className": "doctag",
          "begin": "@[A-Za-z]+"
        },
        {
          "$ref": "#contains.0.contains.0"
        },
        {
          "className": "doctag",
          "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
          "relevance": 0
        }
      ]
    },
    {
      "className": "comment",
      "begin": "__halt_compiler.+?;",
      "end": false,
      "contains": [
        {
          "$ref": "#contains.0.contains.0"
        },
        {
          "className": "doctag",
          "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
          "relevance": 0
        }
      ],
      "endsWithParent": true,
      "keywords": "__halt_compiler",
      "lexemes": "[a-zA-Z_]\\w*"
    },
    {
      "className": "string",
      "begin": "<<<['\"]?\\w+['\"]?$",
      "end": "^\\w+;?$",
      "contains": [
        {
          "begin": "\\\\[\\s\\S]",
          "relevance": 0
        },
        {
          "className": "subst",
          "variants": [
            {
              "begin": "\\$\\w+"
            },
            {
              "begin": "\\{\\$",
              "end": "\\}"
            }
          ]
        }
      ]
    },
    {
      "$ref": "#contains.1.contains.0"
    },
    {
      "className": "variable",
      "begin": "\\$this\\b"
    },
    {
      "className": "variable",
      "begin": "\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"
    },
    {
      "className": "operator",
      "begin": "(::|->)",
      "end": "[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*",
      "excludeEnd": true
    },
    {
      "className": "function",
      "beginKeywords": "function",
      "end": "[;{]",
      "excludeEnd": true,
      "illegal": "\\$|\\[|%",
      "contains": [
        {
          "className": "title",
          "begin": "[a-zA-Z_]\\w*",
          "relevance": 0
        },
        {
          "className": "params",
          "begin": "\\(",
          "end": "\\)",
          "contains": [
            "self",
            {
              "$ref": "#contains.7"
            },
            {
              "className": "comment",
              "begin": "/\\*",
              "end": "\\*/",
              "contains": [
                {
                  "$ref": "#contains.0.contains.0"
                },
                {
                  "className": "doctag",
                  "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
                  "relevance": 0
                }
              ]
            },
            {
              "className": "string",
              "contains": [
                {
                  "$ref": "#contains.4.contains.0"
                },
                {
                  "$ref": "#contains.1.contains.0"
                }
              ],
              "variants": [
                {
                  "begin": "b\"",
                  "end": "\""
                },
                {
                  "begin": "b'",
                  "end": "'"
                },
                {
                  "className": "string",
                  "begin": "'",
                  "end": "'",
                  "illegal": null,
                  "contains": [
                    {
                      "$ref": "#contains.4.contains.0"
                    }
                  ]
                },
                {
                  "className": "string",
                  "begin": "\"",
                  "end": "\"",
                  "illegal": null,
                  "contains": [
                    {
                      "$ref": "#contains.4.contains.0"
                    },
                    {
                      "className": "subst",
                      "begin": "\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]",
                      "relevance": 0
                    },
                    {
                      "className": "subst",
                      "begin": "\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]",
                      "relevance": 0
                    }
                  ]
                }
              ]
            },
            {
              "variants": [
                {
                  "className": "number",
                  "begin": "\\b(0b[01]+)",
                  "relevance": 0
                },
                {
                  "className": "number",
                  "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",
                  "relevance": 0
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "className": "class",
      "beginKeywords": "class interface",
      "end": "{",
      "excludeEnd": true,
      "illegal": "[:\\(\\$\"]",
      "contains": [
        {
          "beginKeywords": "extends implements"
        },
        {
          "$ref": "#contains.9.contains.0"
        }
      ]
    },
    {
      "beginKeywords": "namespace",
      "end": ";",
      "illegal": "[\\.']",
      "contains": [
        {
          "$ref": "#contains.9.contains.0"
        }
      ]
    },
    {
      "beginKeywords": "use",
      "end": ";",
      "contains": [
        {
          "$ref": "#contains.9.contains.0"
        }
      ]
    },
    {
      "begin": "=>"
    },
    {
      "$ref": "#contains.9.contains.1.contains.3"
    },
    {
      "$ref": "#contains.9.contains.1.contains.4"
    }
  ]
}
